home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Online / SANA2Meter / Source / sana2meter.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-05-05  |  9.0 KB  |  254 lines

  1. #ifndef _SANA2METER_H
  2. #define _SANA2METER_H
  3. /*
  4. ** $VER: sana2meter.h 1.1 (4 May 1996)
  5. **
  6. ** (C) Copyright 1996 Marius Gröger
  7. **     All Rights Reserved
  8. **
  9. ** $HISTORY:
  10. **
  11. ** 04 May 1996 : 001.001 :  created
  12. ** 25 Apr 1996 : 001.000 :  created
  13. */
  14.  
  15. /*F*/ /* includes */
  16. #include <exec/libraries.h>
  17. #include <exec/devices.h>
  18. #include <exec/memory.h>
  19. #include <exec/io.h>
  20. #include <libraries/gadtools.h>
  21. #include <workbench/startup.h>
  22. #include <utility/tagitem.h>
  23. #include <netinclude:devices/sana2.h>
  24. #include "compiler.h"
  25. #include "SANA2Meter_rev.h"
  26. /*E*/
  27.  
  28. typedef enum DoWindowCtrl
  29. {
  30.    DOWCTRL_NOP       = 0,
  31.    DOWCTRL_UPDATE    = (1<<0),
  32.    DOWCTRL_REOPEN    = (1<<2),
  33.    DOWCTRL_SHOWWINDOW= (1<<3)
  34. } DoWindowCtrl;
  35.  
  36. /*F*/ /* struct TrackType */
  37. struct TrackType
  38. {
  39.    ULONG                         tt_Type;
  40.    UBYTE                         tt_Label[30];
  41.    UBYTE                         tt_Key[12];
  42.    ULONG                         tt_Flags;
  43.    ULONG                         tt_ICPS;
  44.    ULONG                         tt_OCPS;
  45.    struct Sana2PacketTypeStats   tt_Stats;
  46. };
  47.  
  48. #define TTF_ACTIVE            (1<<0)
  49. #define TTF_TRACKED           (1<<1)
  50. #define TTF_INITIAL_OPACKETS  (1<<2)
  51. #define TTF_INITIAL_IPACKETS  (1<<3)
  52. #define TTF_INITIAL_OBYTES    (1<<4)
  53. #define TTF_INITIAL_IBYTES    (1<<5)
  54. #define TTF_INITIAL_DPACKETS  (1<<6)
  55. #define TTF_INITIAL_ICPS      (1<<7)
  56. #define TTF_INITIAL_OCPS      (1<<8)
  57. #define TTF_INITIAL_SETUP     (1<<9)
  58. #define TTF_DROPFIRSTCPS      (1<<10)
  59. /*E*/
  60. /*F*/ /* enum Member, struct NewWatch, struct Watch */
  61.  
  62. enum Member
  63. {
  64.    MEMBER_NONE,
  65.    MEMBER_DEVICEQUERY,
  66.    MEMBER_GLOBALSTATS,
  67.    MEMBER_SPECIALSTATS,
  68.    MEMBER_TRACKTYPE
  69. };
  70.  
  71. struct NewWatch
  72. {
  73.    enum Member    nw_Member;        /* classification */
  74.    STRPTR         nw_ShortKey;      /* abbreviated option keyword */
  75.    STRPTR         nw_Key;           /* option keyword */
  76.    LONG           nw_LabelID;       /* locale ID */
  77.    ULONG          nw_StructOffset;
  78.    ULONG          nw_Flags;         /* see WF_#? below */
  79. };
  80.  
  81. struct Watch
  82. {
  83.    struct MinNode          w_Link;
  84.    enum Member             w_Member;      /* copy of NewWatch */
  85.    STRPTR                  w_ShortKey;    /* abbreviated option keyword */
  86.    STRPTR                  w_Key;         /* copy of NewWatch */
  87.    struct TrackType     *  w_TrackType;   /* only if (w_Member == MEMBER_TRACKTYPE) */
  88.    STRPTR                  w_Label;       /* translated localeid */
  89.    ULONG                   w_Flags;       /* copy of NewWatch */
  90.    ULONG                   w_ID;          /* for GUI */
  91.    ULONG                *  w_Value;       /* pointer to monitored value */
  92. };
  93. #define WF_ACTIVE   (1<<0)
  94. #define WF_STATIC   (1<<1)
  95. #define WF_FIRSTTT  (1<<2)
  96. #define WF_NOLABEL  (1<<3)
  97. #define WF_OFF      (1<<4)
  98.  
  99. #define SCANWATCHES(w, list) for(w = (struct Watch*)((list)->mlh_Head); w->w_Link.mln_Succ; w=(struct Watch*)w->w_Link.mln_Succ)
  100.  
  101. /*E*/
  102. /*F*/ /* device management data structures */
  103.  
  104.    /* Global data structures that will be passed to other system components */
  105. struct PublicDevData
  106. {
  107.    struct IOSana2Req                pd_S2Req;
  108.    struct Sana2DeviceQuery          pd_S2DeviceQuery;
  109.    struct Sana2DeviceStats          pd_S2DeviceStats;
  110.    struct TrackType              *  pd_TrackedTypes;
  111.    struct Sana2SpecialStatHeader    pd_S2SpecialStats;
  112.    struct Sana2SpecialStatRecord    pd_S2SpecialStatRecs[1];
  113. };
  114.    /* Global data structures that will be used locally only */
  115. struct GlobalDevData
  116. {
  117.    struct MinNode                   gd_Link;
  118.    int                              gd_GetGlobalStats    : 1;
  119.    int                              gd_GetSpecialStats   : 1;
  120.    int                              gd_GetTrackType      : 1;
  121.    int                              gd_ShowDevQuery      : 1;
  122.    int                              gd_Force             : 1;
  123.    int                              gd_Active            : 1;
  124.    int                              gd_FromConfig        : 1;
  125.    LONG                             gd_Unit;
  126.    LONG                             gd_ValidSpecialStats;
  127.    struct MinList                   gd_Watches;
  128.    struct Watch                  *  gd_StdWatches;
  129.    ULONG                            gd_NumTT;
  130.    struct Watch                  *  gd_TrackWatches;
  131.    struct PublicDevData          *  gd_Public;
  132.    UBYTE                            gd_Title[36];
  133.    UBYTE                            gd_Device[1];  /* MUST be last member! */
  134. };
  135. #define SCANDEVS(d, list) for(d = (struct GlobalDevData*)((list)->mlh_Head); d->gd_Link.mln_Succ; d=(struct GlobalDevData*)d->gd_Link.mln_Succ)
  136.  
  137. /*E*/
  138. /*F*/ /* global storage anchor */
  139.  
  140. typedef struct PublicData
  141. {
  142.    struct timerequest               pd_TReq;
  143.    struct TTextAttr                 pd_Font;
  144.    UBYTE                            pd_Fontname[32];
  145.    UBYTE                            pd_Pubscreen[MAXPUBSCREENNAME+1];
  146.    UBYTE                            pd_Console[100];
  147. } *PD;
  148.  
  149.    /* Global data structures that will be used locally only */
  150. typedef struct GlobalData
  151. {
  152.    /* System related stuff */
  153.    struct Library                *  gd_SysBase,
  154.                                  *  gd_UtilityBase,
  155.                                  *  gd_GadToolsBase,
  156.                                  *  gd_GTLayoutBase,
  157.                                  *  gd_IntuitionBase,
  158.                                  *  gd_IconBase,
  159.                                  *  gd_DOSBase;
  160.    struct Task                   *  gd_We;
  161.    struct MsgPort                *  gd_S2Port;
  162.    struct MsgPort                *  gd_TPort;
  163.    void                          *  gd_AnyPool;
  164.    void                          *  gd_PubPool;
  165.    /* Timing related stuff */
  166.    struct timeval                   gd_time;
  167.    /* DOS/Arguments related stuff */
  168.    UBYTE                            gd_ProgramName[80];
  169.    ULONG                            gd_argc;
  170.    UBYTE                         ** gd_argv;
  171.    BPTR                             gd_Input;
  172.    BPTR                             gd_Output;
  173.    struct MsgPort                *  gd_OldConsoleTask;
  174.    BPTR                             gd_OldInput;
  175.    BPTR                             gd_OldOutput;
  176.    /* Locale related stuff */
  177.    struct LocaleInfo                gd_LocaleInfo;
  178.    /* Flags related to anything */
  179.    int                              gd_CustomFont      : 1;
  180.    int                              gd_List            : 1;
  181.    int                              gd_CLI             : 1;
  182.    int                              gd_InputSelected   : 1;
  183.    int                              gd_OutputSelected  : 1;
  184.    int                              gd_CTSelected      : 1;
  185.    int                              gd_Inactive        : 1;
  186.    int                              gd_ToBack          : 1;
  187.    int                              gd_NeedTimer       : 1;
  188.    int                              gd_TimerOff        : 1;
  189.    int                              gd_StayFront       : 1;
  190.    /* Config related stuff */
  191.    int                              gd_HadRefresh      : 1;
  192.    int                              gd_HadCPSAging     : 1;
  193.    int                              gd_HadLeft         : 1;
  194.    int                              gd_HadTop          : 1;
  195.    int                              gd_HadWindowToBack : 1;
  196.    int                              gd_HadFont         : 1;
  197.    int                              gd_HadInactive     : 1;
  198.    int                              gd_HadPubscreen    : 1;
  199.    int                              gd_HadStayFront    : 1;
  200.    STRPTR                           gd_ConfigName;
  201.    ULONG                            gd_Refresh;
  202.    ULONG                            gd_CPSAging;
  203.    ULONG                            gd_CPSAgingComp;
  204.    /* GUI related stuff */
  205.    struct LayoutHandle           *  gd_Handle;
  206.    struct NewMenu                *  gd_NewMenu;
  207.    struct NewMenu                *  gd_WatchStart;
  208.    struct NewMenu                *  gd_DevSelStart;
  209.    struct Menu                   *  gd_Menu;
  210.    WORD                             gd_Left;
  211.    WORD                             gd_Top;
  212.    /* structure extensions */
  213.    struct MinList                   gd_Devices;  /* List of GlobalDevData */
  214.    ULONG                            gd_NumDevices;
  215.    ULONG                            gd_NumActives;
  216.    PD                               gd_Public;
  217. } *GD;
  218.  
  219. #ifdef __SASC
  220.      /*
  221.      ** redirect all shared library bases to our device base.
  222.      */
  223. #  define SysBase       gd->gd_SysBase
  224. #  define GadToolsBase  gd->gd_GadToolsBase
  225. #  define GTLayoutBase  gd->gd_GTLayoutBase
  226. #  define DOSBase       gd->gd_DOSBase
  227. #  define UtilityBase   gd->gd_UtilityBase
  228. #  define LocaleBase    gd->gd_LocaleInfo.li_LocaleBase
  229. #  define IconBase      gd->gd_IconBase
  230. #  define IntuitionBase gd->gd_IntuitionBase
  231.      /*
  232.      ** This macro declares a local variable which temporary gets
  233.      ** SysBase directly from AbsExecBase.
  234.      */
  235. #  define LOCALSYSBASE struct { void *gd_SysBase; } *gd = (void*)0x4
  236. #else
  237. #  error Please define library bases for your compiler
  238. #endif
  239.  
  240. /*
  241. ** Pool settings
  242. */
  243. #define PUBPOOLKIND     (MEMF_PUBLIC|MEMF_CLEAR)
  244. #define PUBPOOLPUDDLE   (4*1024)
  245. #define PUBPOOLTHRESH   (3*1024)
  246. #define ANYPOOLKIND     (MEMF_ANY|MEMF_CLEAR)
  247. #define ANYPOOLPUDDLE   (4*1024)
  248. #define ANYPOOLTHRESH   (3*1024)
  249.  
  250. /*E*/
  251.  
  252. #endif
  253.  
  254.